Python:为什么运行 Flask 开发服务器会自行运行两次? | 您所在的位置:网站首页 › flask 运行python程序 › Python:为什么运行 Flask 开发服务器会自行运行两次? |
Werkzeug 重新加载器生成一个子进程,以便它可以在每次代码更改时重新启动该进程。 Werkzeug 是在您调用app.run()时为 Flask 提供开发服务器的库。 查看restart_with_reloader()函数代码;使用subprocess.call()再次运行您的脚本。 如果将use_reloader设置为False ,您会看到该行为消失,但您也会失去重新加载功能: app.run(port=4004, debug=config.DEBUG, host='0.0.0.0', use_reloader=False)您也可以在使用flask run命令时禁用重新加载程序: FLASK_DEBUG=1 flask run --no-reload如果您想检测何时处于重新加载子进程中,可以使用werkzeug.serving.is_running_from_reloader函数: from werkzeug.serving import is_running_from_reloader if is_running_from_reloader(): print(f"################### Restarting @ {datetime.utcnow()} ###################")但是,如果您需要设置模块全局变量,那么您应该在函数上使用@app.before_first_request装饰器并让该函数设置此类全局变量。当第一个请求进来时,每次重新加载后它只会被调用一次: @app.before_first_request def before_first_request(): print(f"########### Restarted, first request @ {datetime.utcnow()} ############")请注意,如果您在使用分叉或新子进程处理请求的全面 WSGI 服务器中运行它,则可能会为每个新子进程调用before_first_request处理程序。 |
CopyRight 2018-2019 实验室设备网 版权所有 |